#ifndef __GEOMETRY_PRIMITIVE__
#define __GEOMETRY_PRIMITIVE__

struct Derivatives {};

typedef std::vector<nfloat> Knotvector;

class Dispatcher;

class Primitive {
public:
	virtual ~Primitive() {};
	
	static std::vector< std::vector<size_t> > GenBinCoeffTable(int n);
	static std::vector< std::vector<size_t> > Bin; 

	virtual void Save(const std::string& filename, const std::string& attribute) const {};
	virtual void Save(const std::string& filename, const std::vector<std::string>& attribute) const {};
	
	virtual void Dispatch(Dispatcher* d) {
		
	}
protected:
private:
};

#endif //__GEOMETRY_PRIMITIVE__
